package okna;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import javax.swing.JComboBox;
import javax.swing.JTabbedPane;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.UIManager;
import javax.swing.JOptionPane;
import javax.swing.border.MatteBorder;
import javax.swing.border.EtchedBorder;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseAdapter;

import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.DefaultComboBoxModel;

import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;

import dziennik.classes.*;
import dziennik.main.DziennikMain;

import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import java.awt.Dimension;
import javax.swing.table.TableColumn;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.DefaultCellEditor;
import javax.swing.AbstractListModel;
import javax.swing.ListSelectionModel;
import javax.swing.JScrollPane;

import javax.swing.DefaultListModel;
import java.awt.BorderLayout;

import java.util.Calendar;


/**
 * 
 * <p>
 * Klasa dziedziczaca po klasie Image_Panel,
 * zawiera kod obslugujacy tryb nauczyciela. Umożliwia:
 * <ul>
 * <li>Dodawanie/Usuwanie/Edycje ocen w dzienniku</li>
 * <li>Dodawanie/Usuwanie/Edycje obecnosci w dzienniku</li>
 * <li>Dodawanie/Usuwanie/Edycje/Czytanie uwag w dzienniku</li>
 * <li>Wybior edytowanego dziennika na podstawie uprawnien</li> * 
 * <li>Zapis zmodyfikowanego dziennika</li>
 * </ul>
 * </p>
 * 
 * @author Dariusz Orlowski
 *
 */
public class PanelNauczyciel extends Image_Panel {
	
	private JLabel label_klasa;
	private JComboBox comboBox_przedmiot;
	private JPanel panel_boczny_oceny;
	private JPanel panel_boczny_obecnosci;
	private JPanel panel_boczny_uwagi;
	//panel glowny
	private JTabbedPane panel_glowny;
	//panel boczny oceny
	private JScrollPane panel_oceny;
	private JComboBox oceny_comboBox_ocena;
	private JTextField oceny_textField_waga;
	private JTextField oceny_textField_komentarz;
	//panel boczny obecnosci
	private JScrollPane panel_obecnosci;
	private JComboBox obecnosci_comboBox_dzien;
	private JComboBox obecnosci_comboBox_miesiac;
	private JComboBox obecnosci_comboBox_rok;
	private JComboBox obecnosci_comboBox_obecnosc;
	//panel boczny uwagi
	private JScrollPane panel_uwagi;
	private JComboBox uwagi_comboBox_dzien;
	private JComboBox uwagi_comboBox_miesiac;
	private JComboBox uwagi_comboBox_rok;
	private JTextArea uwagi_textArea_tresc; 
	private JTextField uwagi_textField_przedmiot;
	private JTextField uwagi_textField_wystawiajacy;
	private Boolean uwagi_boolean_przeczytano;
	private JButton uwagi_button_edytujUwage;
	private JButton uwagi_button_przeczytane;
		
	private JTable table_oceny;
	private TableModel table_oceny_model;
	private JTable table_obecnosci;
	private TableModel table_obecnosci_model;
	private JTable table_uwagi;
	private TableModel table_uwagi_model;
	

	
	private Dziennik dziennik, dziennik_zapisany;		
	private int nauczyciel_id;
	private ArrayList<String> nauczyciel_przedmioty_uprawnienia;
	private Boolean wychowawca=false;
	private boolean initializing;	//zmienna ma wartosc true gdy tworzy sie obiekt panelu glownego
	private int tab=0;//zakladka JTabbedPane
	private Calendar calendar = Calendar.getInstance();
		
    /**
	 * <p>
	 * Pusty konstruktor klasy.
	 * </p>
	 */
	public PanelNauczyciel(){

	}
	
    /**
	 * <p>
	 * Konstruktor klasy. Tworzy wszystkie elementy panelu nauczyciela oraz definiuje obsluge zdarzen elementow okna.
	 * </p>
	 * @param user_id - Obiekt typu int - definiuje numer zalogowanego uzytkownika
	 */
	public PanelNauczyciel(int user_id) {
		this.initializing=true;
		this.setLayout(new BorderLayout());
		this.nauczyciel_id=user_id;
		
		try
		{
			image = new ImageIcon("tlo.png").getImage();
		}
		catch(Exception e)
		{
			System.out.println("Błąd");
		}
		setLayout(null);
		setBounds(0,0,792,573);
		
		{
			label_klasa = new JLabel("");
			label_klasa.setForeground(Color.white);
			label_klasa.setBounds(10, 11, 120, 14);
			add(label_klasa);
		}
		{
			comboBox_przedmiot = new JComboBox();
			comboBox_przedmiot.setBounds(10, 36, 120, 20);
			comboBox_przedmiot.addItemListener(new ItemListener() {
	            public void itemStateChanged(ItemEvent e) {
	            	if (initializing==false){
	            		dziennik=table_oceny_model.zapiszZmianyDziennika();
	            		dziennik=table_obecnosci_model.zapiszZmianyDziennika();
	            		dziennik=table_uwagi_model.zapiszZmianyDziennika();
	            	}
	            	updatePanelGlowny();
	            }
	        });
			comboBox_przedmiot.setVisible(false);
			add(comboBox_przedmiot);
			
		}
		{
			panel_boczny_oceny = new JPanel();
			panel_boczny_oceny.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null));
			panel_boczny_oceny.setBounds(10, 67, 120, 472);
			panel_boczny_oceny.setLayout(null);
			
			JLabel label_ocena = new JLabel("Ocena:");
			label_ocena.setBounds(10, 11, 45, 14);
			panel_boczny_oceny.add(label_ocena);
			
			oceny_comboBox_ocena = new JComboBox();
			oceny_comboBox_ocena.setMaximumRowCount(11);
			oceny_comboBox_ocena.setModel(new DefaultComboBoxModel(new String[] {"","1", "+1", "2", "+2", "3", "+3", "4", "+4", "5", "+5", "6"}));
			oceny_comboBox_ocena.setBounds(10, 36, 45, 20);
			panel_boczny_oceny.add(oceny_comboBox_ocena);
			
			JLabel label_waga = new JLabel("Waga:");
			label_waga.setBounds(65, 11, 45, 14);
			panel_boczny_oceny.add(label_waga);

			oceny_textField_waga = new JTextField();
			oceny_textField_waga.setBounds(65, 36, 45, 20);
			panel_boczny_oceny.add(oceny_textField_waga);
			oceny_textField_waga.setColumns(10);
			
			JLabel label_komentarz = new JLabel("Komentarz:");
			label_komentarz.setBounds(10, 67, 100, 14);
			panel_boczny_oceny.add(label_komentarz);
			
			oceny_textField_komentarz = new JTextField();
			oceny_textField_komentarz.setBounds(10, 92, 100, 20);
			panel_boczny_oceny.add(oceny_textField_komentarz);
			oceny_textField_komentarz.setColumns(10);
			
			JButton button_edytujOcene = new JButton("Edytuj");
			button_edytujOcene.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent arg0) {
					int col=table_oceny.getSelectedColumn();
					int row=table_oceny.getSelectedRow();
						if (col>2){
							Boolean error=false;
							int waga=0;
							try{
								if (oceny_textField_waga.getText().length()==0) error=true;
								waga=Integer.parseInt(oceny_textField_waga.getText());
							}
							catch(NumberFormatException ex){
								error=true;						
							}
		
							if (error==false){
								String nazwa=oceny_textField_komentarz.getText();
								double wartosc=0.0;
								if (oceny_comboBox_ocena.getSelectedIndex()>0) wartosc=wartosc+(oceny_comboBox_ocena.getSelectedIndex()+1)*0.5;
								if (waga==0) waga=1;
								Ocena ocena = new Ocena(nazwa,wartosc,waga);
								table_oceny_model.setValueAt(ocena, row, col);
							}
							else MainWindow.wyswietl_blad("Błąd", "Niepoprawne dane.");
						}
					}
				});
			button_edytujOcene.setBounds(20, 123, 80, 23);
			panel_boczny_oceny.add(button_edytujOcene);
			
			JLabel label_kolumna = new JLabel("Kolumna:");
			label_kolumna.setBounds(10, 320, 100, 14);
			panel_boczny_oceny.add(label_kolumna);
			
			JButton button_dodajKolumne = new JButton("Dodaj");
			button_dodajKolumne.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					Boolean error=false;
					int waga=0;
					try{
						if (oceny_textField_waga.getText().length()==0) error=true;
						waga=Integer.parseInt(oceny_textField_waga.getText());
					}
					catch(NumberFormatException ex){
						error=true;						
					}

					if (error==false){
						String nazwa=oceny_textField_komentarz.getText();
						double wartosc=0.0;
						if (oceny_comboBox_ocena.getSelectedIndex()>0) wartosc=wartosc+(oceny_comboBox_ocena.getSelectedIndex()+1)*0.5;
						if (waga==0) waga=1;
	
						table_oceny_model.addOcenaColum(nazwa, wartosc, waga);
						
						table_oceny.getColumnModel().getColumn(0).setPreferredWidth(45);
						table_oceny.getColumnModel().getColumn(0).setMinWidth(45);
						table_oceny.getColumnModel().getColumn(0).setMaxWidth(45);
						table_oceny.getColumnModel().getColumn(1).setPreferredWidth(120);
						table_oceny.getColumnModel().getColumn(1).setMaxWidth(120);
						table_oceny.getColumnModel().getColumn(1).setMinWidth(120);
						table_oceny.getColumnModel().getColumn(2).setPreferredWidth(120);
						table_oceny.getColumnModel().getColumn(2).setMaxWidth(120);
						table_oceny.getColumnModel().getColumn(2).setMinWidth(120);
						
						if (table_oceny.getColumnCount()>3){
							for (int i=3; i<table_oceny.getColumnCount();i++){
								table_oceny.getColumnModel().getColumn(i).setPreferredWidth(20);
								table_oceny.getColumnModel().getColumn(i).setMinWidth(20);
								table_oceny.getColumnModel().getColumn(i).setMaxWidth(20);
							}
						}
					}
					else MainWindow.wyswietl_blad("Błąd", "Niepoprawne dane.");
					
				}
			});
			button_dodajKolumne.setBounds(20, 345, 80, 23);
			panel_boczny_oceny.add(button_dodajKolumne);
			
			JButton button_usunKolumne = new JButton("Usuń");
			button_usunKolumne.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					int column=table_oceny.getSelectedColumn();
					if (column>2){					
						table_oceny_model.removeColumn(column);
						
						table_oceny.getColumnModel().getColumn(0).setPreferredWidth(45);
						table_oceny.getColumnModel().getColumn(0).setMinWidth(45);
						table_oceny.getColumnModel().getColumn(0).setMaxWidth(45);
						table_oceny.getColumnModel().getColumn(1).setPreferredWidth(120);
						table_oceny.getColumnModel().getColumn(1).setMaxWidth(120);
						table_oceny.getColumnModel().getColumn(1).setMinWidth(120);
						table_oceny.getColumnModel().getColumn(2).setPreferredWidth(120);
						table_oceny.getColumnModel().getColumn(2).setMaxWidth(120);
						table_oceny.getColumnModel().getColumn(2).setMinWidth(120);
						
						if (table_oceny.getColumnCount()>3){
							for (int i=3; i<table_oceny.getColumnCount();i++){
								table_oceny.getColumnModel().getColumn(i).setPreferredWidth(20);
								table_oceny.getColumnModel().getColumn(i).setMinWidth(20);
								table_oceny.getColumnModel().getColumn(i).setMaxWidth(20);
							}
						}
					}
				}
			});
			button_usunKolumne.setBounds(20, 379, 80, 23);
			panel_boczny_oceny.add(button_usunKolumne);
			
			JButton button_zapiszDziennik = new JButton("Zapisz");
			button_zapiszDziennik.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					zapiszDziennik();
				}
			});
			button_zapiszDziennik.setBounds(20, 438, 80, 23);
			panel_boczny_oceny.add(button_zapiszDziennik);
			
			JLabel label_dziennik = new JLabel("Dziennik:");
			label_dziennik.setBounds(10, 413, 100, 14);
			panel_boczny_oceny.add(label_dziennik);
			add(panel_boczny_oceny);
			panel_boczny_oceny.setVisible(false);
		}
		{
			panel_boczny_obecnosci = new JPanel();
			panel_boczny_obecnosci.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null));
			panel_boczny_obecnosci.setBounds(10, 67, 120, 472);
			panel_boczny_obecnosci.setLayout(null);
			
			JLabel label_data = new JLabel("Data:");
			label_data.setBounds(10, 11, 45, 14);
			panel_boczny_obecnosci.add(label_data);

			obecnosci_comboBox_dzien = new JComboBox();
			obecnosci_comboBox_dzien.setBounds(10, 36, 45, 20);
			obecnosci_comboBox_dzien.setModel(new DefaultComboBoxModel(new String[] {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31"}));
			panel_boczny_obecnosci.add(obecnosci_comboBox_dzien);
			
			obecnosci_comboBox_miesiac = new JComboBox();
			obecnosci_comboBox_miesiac.setBounds(65, 36, 45, 20);
			obecnosci_comboBox_miesiac.setModel(new DefaultComboBoxModel(new String[] {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"}));
			panel_boczny_obecnosci.add(obecnosci_comboBox_miesiac);

			obecnosci_comboBox_rok = new JComboBox();
			obecnosci_comboBox_rok.setBounds(50, 8, 60, 20);
			for (int i=0;i<10;i++){	//wyswietlanie 10 poprzednich lat;
				obecnosci_comboBox_rok.addItem(calendar.get(Calendar.YEAR)-i);
			}
			panel_boczny_obecnosci.add(obecnosci_comboBox_rok);
			
			JLabel label_obecnosc = new JLabel("Obecność:");
			label_obecnosc.setBounds(10, 67, 100, 14);
			panel_boczny_obecnosci.add(label_obecnosc);
			
			obecnosci_comboBox_obecnosc = new JComboBox();
			obecnosci_comboBox_obecnosc.setBounds(10, 92, 100, 20);
			obecnosci_comboBox_obecnosc.setModel(new DefaultComboBoxModel(new String[] {"","Obecność", "Nieobecność", "Usprawiedliwione", "Spóźnienie", "Ucieczka"}));
			panel_boczny_obecnosci.add(obecnosci_comboBox_obecnosc);
			
			JButton button_edytujObecnosc = new JButton("Edytuj");
			button_edytujObecnosc.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent arg0) {
					int col=table_obecnosci.getSelectedColumn();
					int row=table_obecnosci.getSelectedRow();
						if (col>2){							
							String temp, data;
							temp=""+(obecnosci_comboBox_dzien.getSelectedIndex()+1);
							if (temp.length()==1) temp="0"+temp;
							data=temp+"-";
							temp=""+(obecnosci_comboBox_miesiac.getSelectedIndex()+1);
							if (temp.length()==1) temp="0"+temp;
							data=data+temp+obecnosci_comboBox_dzien.getSelectedItem().toString();
							char znak=' ';
							switch(obecnosci_comboBox_obecnosc.getSelectedIndex()){
							case 1:	znak='o';break;
							case 2:	znak='-';break;
							case 3:	znak='+';break;
							case 4:	znak='s';break;
							case 5:	znak='u';break;
							}
							Obecnosc obecnosc=new Obecnosc(data,znak);
							table_obecnosci_model.setValueAt(obecnosc, row, col);
						}
					}
				});
			button_edytujObecnosc.setBounds(20, 123, 80, 23);
			panel_boczny_obecnosci.add(button_edytujObecnosc);
			
			JLabel label_kolumna = new JLabel("Kolumna:");
			label_kolumna.setBounds(10, 320, 100, 14);
			panel_boczny_obecnosci.add(label_kolumna);
			
			JButton button_dodajKolumne = new JButton("Dodaj");
			button_dodajKolumne.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					String temp, data;
					temp=""+(obecnosci_comboBox_dzien.getSelectedIndex()+1);
					if (temp.length()==1) temp="0"+temp;
					data=temp+"-";
					temp=""+(obecnosci_comboBox_miesiac.getSelectedIndex()+1);
					if (temp.length()==1) temp="0"+temp;
					data=data+temp+'-'+obecnosci_comboBox_rok.getSelectedItem().toString();
					
					char obecnosc=' ';
					switch(obecnosci_comboBox_obecnosc.getSelectedIndex()){
					case 1:	obecnosc='o';break;
					case 2:	obecnosc='-';break;
					case 3:	obecnosc='+';break;
					case 4:	obecnosc='s';break;
					case 5:	obecnosc='u';break;
					}
					
					table_obecnosci_model.addObecnoscColum(data,obecnosc);
					
					table_obecnosci.getColumnModel().getColumn(0).setPreferredWidth(45);
					table_obecnosci.getColumnModel().getColumn(0).setMinWidth(45);
					table_obecnosci.getColumnModel().getColumn(0).setMaxWidth(45);
					table_obecnosci.getColumnModel().getColumn(1).setPreferredWidth(120);
					table_obecnosci.getColumnModel().getColumn(1).setMaxWidth(120);
					table_obecnosci.getColumnModel().getColumn(1).setMinWidth(120);
					table_obecnosci.getColumnModel().getColumn(2).setPreferredWidth(120);
					table_obecnosci.getColumnModel().getColumn(2).setMaxWidth(120);
					table_obecnosci.getColumnModel().getColumn(2).setMinWidth(120);
					
					if (table_obecnosci.getColumnCount()>3){
						for (int i=3; i<table_obecnosci.getColumnCount();i++){
							table_obecnosci.getColumnModel().getColumn(i).setPreferredWidth(20);
							table_obecnosci.getColumnModel().getColumn(i).setMinWidth(20);
							table_obecnosci.getColumnModel().getColumn(i).setMaxWidth(20);
						}
					}		
				}
			});
			button_dodajKolumne.setBounds(20, 345, 80, 23);
			panel_boczny_obecnosci.add(button_dodajKolumne);
			
			JButton button_usunKolumne = new JButton("Usuń");
			button_usunKolumne.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					int column=table_obecnosci.getSelectedColumn();
					if (column>2){
						table_obecnosci_model.removeColumn(column);
						table_obecnosci.getColumnModel().getColumn(0).setPreferredWidth(45);
						table_obecnosci.getColumnModel().getColumn(0).setMinWidth(45);
						table_obecnosci.getColumnModel().getColumn(0).setMaxWidth(45);
						table_obecnosci.getColumnModel().getColumn(1).setPreferredWidth(120);
						table_obecnosci.getColumnModel().getColumn(1).setMaxWidth(120);
						table_obecnosci.getColumnModel().getColumn(1).setMinWidth(120);
						table_obecnosci.getColumnModel().getColumn(2).setPreferredWidth(120);
						table_obecnosci.getColumnModel().getColumn(2).setMaxWidth(120);
						table_obecnosci.getColumnModel().getColumn(2).setMinWidth(120);
						
						if (table_obecnosci.getColumnCount()>3){
							for (int i=3; i<table_obecnosci.getColumnCount();i++){
								table_obecnosci.getColumnModel().getColumn(i).setPreferredWidth(20);
								table_obecnosci.getColumnModel().getColumn(i).setMinWidth(20);
								table_obecnosci.getColumnModel().getColumn(i).setMaxWidth(20);
							}
						}
					}
				}
			});
			button_usunKolumne.setBounds(20, 379, 80, 23);
			panel_boczny_obecnosci.add(button_usunKolumne);
			
			JButton button_zapiszDziennik = new JButton("Zapisz");
			button_zapiszDziennik.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					zapiszDziennik();
				}
			});
			button_zapiszDziennik.setBounds(20, 438, 80, 23);
			panel_boczny_obecnosci.add(button_zapiszDziennik);
			
			JLabel label_dziennik = new JLabel("Dziennik:");
			label_dziennik.setBounds(10, 413, 100, 14);
			panel_boczny_obecnosci.add(label_dziennik);
			add(panel_boczny_obecnosci);
			panel_boczny_obecnosci.setVisible(false);
		}
		{
			panel_boczny_uwagi = new JPanel();
			panel_boczny_uwagi.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null));
			panel_boczny_uwagi.setBounds(10, 67, 120, 472);
			panel_boczny_uwagi.setLayout(null);
			
			JLabel label_data = new JLabel("Data:");
			label_data.setBounds(10, 11, 45, 14);
			panel_boczny_uwagi.add(label_data);

			uwagi_comboBox_dzien = new JComboBox();
			uwagi_comboBox_dzien.setBounds(10, 36, 45, 20);
			uwagi_comboBox_dzien.setModel(new DefaultComboBoxModel(new String[] {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31"}));
			panel_boczny_uwagi.add(uwagi_comboBox_dzien);
			
			uwagi_comboBox_miesiac = new JComboBox();
			uwagi_comboBox_miesiac.setBounds(65, 36, 45, 20);
			uwagi_comboBox_miesiac.setModel(new DefaultComboBoxModel(new String[] {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"}));
			panel_boczny_uwagi.add(uwagi_comboBox_miesiac);

			uwagi_comboBox_rok = new JComboBox();
			uwagi_comboBox_rok.setBounds(50, 8, 60, 20);

			panel_boczny_uwagi.add(uwagi_comboBox_rok);
			
			JLabel label_obecnosc = new JLabel("Wystawiajacy:");
			label_obecnosc.setBounds(10, 67, 100, 14);
			panel_boczny_uwagi.add(label_obecnosc);

			uwagi_textField_wystawiajacy = new JTextField();
			uwagi_textField_wystawiajacy.setEnabled(false);
			uwagi_textField_wystawiajacy.setBounds(10, 92, 100, 20);
			uwagi_textField_wystawiajacy.setColumns(10);
			panel_boczny_uwagi.add(uwagi_textField_wystawiajacy);
			
			JLabel label_przedmiot = new JLabel("Przedmiot:");
			label_przedmiot.setBounds(10, 123, 102, 14);
			panel_boczny_uwagi.add(label_przedmiot);
			
			uwagi_textField_przedmiot = new JTextField();
			uwagi_textField_przedmiot.setEnabled(false);
			uwagi_textField_przedmiot.setBounds(10, 148, 100, 20);
			uwagi_textField_przedmiot.setColumns(10);
			panel_boczny_uwagi.add(uwagi_textField_przedmiot);
			
			JLabel label_tresc = new JLabel("Tresc:");
			label_tresc.setBounds(10, 179, 100, 14);
			panel_boczny_uwagi.add(label_tresc);
			
			JScrollPane scrollPane_uwagi = new JScrollPane();
			scrollPane_uwagi.setBounds(10, 204, 100, 60);
			panel_boczny_uwagi.add(scrollPane_uwagi);
			
			uwagi_textArea_tresc = new JTextArea();
			scrollPane_uwagi.setViewportView(uwagi_textArea_tresc);
			uwagi_textArea_tresc.setLineWrap(true);
			
			uwagi_button_edytujUwage = new JButton("Edytuj");
			uwagi_button_edytujUwage.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent arg0) {
					int col=table_uwagi.getSelectedColumn();
					int row=table_uwagi.getSelectedRow();
						if (col>2){		
							String temp, data, tresc;
							int wystawiajacy=0;
							int przedmiot=0;
							boolean przeczytano=false;
							temp=""+(uwagi_comboBox_dzien.getSelectedIndex()+1);
							if (temp.length()==1) temp="0"+temp;
							data=temp+"-";
							temp=""+(uwagi_comboBox_miesiac.getSelectedIndex()+1);
							if (temp.length()==1) temp="0"+temp;
							data=data+temp+"-"+uwagi_comboBox_rok.getSelectedItem().toString();

							tresc=uwagi_textArea_tresc.getText();
							try{
								wystawiajacy=Integer.parseInt(uwagi_textField_wystawiajacy.getText());
							}
							catch(NumberFormatException ex){}
							try{
								przedmiot=Integer.parseInt(uwagi_textField_przedmiot.getText());	
							}
							catch(NumberFormatException ex){}
							
							if(wystawiajacy==0) wystawiajacy=nauczyciel_id;//przypisanie nowego wystawiajacego w razie bledu
							
							if (wystawiajacy==nauczyciel_id){
								Uwaga uwaga=new Uwaga(tresc,data,wystawiajacy,przeczytano,przedmiot);
								table_uwagi_model.setValueAt(uwaga, row, col);
								uwagi_button_edytujUwage.setVisible(true);
								uwagi_button_przeczytane.setVisible(false);
							}
							else MainWindow.wyswietl_blad("Błąd", "Możesz edytować tylko własne uwagi.");
						}
					}
				});
			uwagi_button_edytujUwage.setBounds(20, 275, 80, 23);
			panel_boczny_uwagi.add(uwagi_button_edytujUwage);
			
			uwagi_button_przeczytane = new JButton("OK");
			uwagi_button_przeczytane.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent arg0) {
					int col=table_uwagi.getSelectedColumn();
					int row=table_uwagi.getSelectedRow();
						if (col>2){
							Uwaga uwaga=(Uwaga)table_uwagi_model.getValueAt(row, col);
							uwaga.setPrzeczytano(true);
							table_uwagi_model.setValueAt(uwaga, row, col);
							uwagi_button_edytujUwage.setVisible(true);
							uwagi_button_przeczytane.setVisible(false);
							}
						}
					});
			uwagi_button_przeczytane.setBounds(20, 275, 80, 23);
			uwagi_button_przeczytane.setVisible(false);
			panel_boczny_uwagi.add(uwagi_button_przeczytane);

			JLabel label_kolumna = new JLabel("Kolumna:");
			label_kolumna.setBounds(10, 320, 100, 14);
			panel_boczny_uwagi.add(label_kolumna);
			
			JButton button_dodajKolumne = new JButton("Dodaj");
			button_dodajKolumne.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					String temp, data, tresc;
					int wystawiajacy=nauczyciel_id;
					int przedmiot=Przedmiot.index_przedmiotu(comboBox_przedmiot.getSelectedItem().toString());
					boolean przeczytano;
					
					temp=""+(uwagi_comboBox_dzien.getSelectedIndex()+1);
					if (temp.length()==1) temp="0"+temp;
					data=temp+"-";
					temp=""+(uwagi_comboBox_miesiac.getSelectedIndex()+1);
					if (temp.length()==1) temp="0"+temp;
					data=data+temp+'-'+uwagi_comboBox_rok.getSelectedItem().toString();
					
					tresc=uwagi_textArea_tresc.getText();
					
					przeczytano=false;
					
					table_uwagi_model.addUwagaColum(tresc,data,wystawiajacy,przeczytano,przedmiot);
					table_uwagi.getColumnModel().getColumn(0).setPreferredWidth(45);
					table_uwagi.getColumnModel().getColumn(0).setMinWidth(45);
					table_uwagi.getColumnModel().getColumn(0).setMaxWidth(45);
					table_uwagi.getColumnModel().getColumn(1).setPreferredWidth(120);
					table_uwagi.getColumnModel().getColumn(1).setMaxWidth(120);
					table_uwagi.getColumnModel().getColumn(1).setMinWidth(120);
					table_uwagi.getColumnModel().getColumn(2).setPreferredWidth(120);
					table_uwagi.getColumnModel().getColumn(2).setMaxWidth(120);
					table_uwagi.getColumnModel().getColumn(2).setMinWidth(120);
						
					if (table_uwagi.getColumnCount()>3){
						for (int i=3; i<table_uwagi.getColumnCount();i++){
							table_uwagi.getColumnModel().getColumn(i).setPreferredWidth(70);
							table_uwagi.getColumnModel().getColumn(i).setMinWidth(70);
							table_uwagi.getColumnModel().getColumn(i).setMaxWidth(70);
						}
					}	
					}
			});
			button_dodajKolumne.setBounds(20, 345, 80, 23);
			panel_boczny_uwagi.add(button_dodajKolumne);
			
			JButton button_usunKolumne = new JButton("Usuń");
			button_usunKolumne.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					int column=table_uwagi.getSelectedColumn();
					if (column>2){
						table_uwagi_model.removeColumn(column);
						table_uwagi.getColumnModel().getColumn(0).setPreferredWidth(45);
						table_uwagi.getColumnModel().getColumn(0).setMinWidth(45);
						table_uwagi.getColumnModel().getColumn(0).setMaxWidth(45);
						table_uwagi.getColumnModel().getColumn(1).setPreferredWidth(120);
						table_uwagi.getColumnModel().getColumn(1).setMaxWidth(120);
						table_uwagi.getColumnModel().getColumn(1).setMinWidth(120);
						table_uwagi.getColumnModel().getColumn(2).setPreferredWidth(120);
						table_uwagi.getColumnModel().getColumn(2).setMaxWidth(120);
						table_uwagi.getColumnModel().getColumn(2).setMinWidth(120);
						
						if (table_uwagi.getColumnCount()>3){
							for (int i=3; i<table_uwagi.getColumnCount();i++){
								table_uwagi.getColumnModel().getColumn(i).setPreferredWidth(70);
								table_uwagi.getColumnModel().getColumn(i).setMinWidth(70);
								table_uwagi.getColumnModel().getColumn(i).setMaxWidth(70);
							}
						}
					}
				}
			});
			button_usunKolumne.setBounds(20, 379, 80, 23);
			panel_boczny_uwagi.add(button_usunKolumne);
			
			JButton button_zapiszDziennik = new JButton("Zapisz");
			button_zapiszDziennik.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					zapiszDziennik();
				}
			});
			button_zapiszDziennik.setBounds(20, 438, 80, 23);
			panel_boczny_uwagi.add(button_zapiszDziennik);
			
			JLabel label_dziennik = new JLabel("Dziennik:");
			label_dziennik.setBounds(10, 413, 100, 14);
			panel_boczny_uwagi.add(label_dziennik);
			add(panel_boczny_uwagi);
			panel_boczny_uwagi.setVisible(false);
		}
		{
			panel_glowny = new JTabbedPane(JTabbedPane.TOP);
			panel_glowny.setBounds(140, 11, 642, 529);
			panel_glowny.getModel().addChangeListener (new ChangeListener() {
				 public void stateChanged(ChangeEvent changeEvent) {
					 tab=panel_glowny.getSelectedIndex();
					 zmien_panel_boczny();
				 }
		    });
			add(panel_glowny);
			panel_glowny.setVisible(false);
		}
		{
		panel_oceny = new JScrollPane();
		panel_glowny.addTab("Oceny", null, panel_oceny, null);
		
		panel_obecnosci = new JScrollPane();
		panel_glowny.addTab("Obecności", null, panel_obecnosci, null);
		
		panel_uwagi = new JScrollPane();
		panel_glowny.addTab("Uwagi", null, panel_uwagi, null);
		}
	}
	
	protected void paintComponent(Graphics g)
	{
		super.paintComponent(g); 
		if (image != null)
			g.drawImage(image, -20, 0, null);
	}
	
	/**
	 * <p>
	 * Metoda inicjalizujaca tryb nauczyciela po wczytaniu dziennika.
	 * Tworzy ona nowe obiekty typu JTable i ustawia ich parametry.
	 * </p>
	 */
	void init(){
		//inicjowanie
		this.initializing=true;
		panel_glowny.setLayout(new BorderLayout());
		panel_glowny.setSelectedIndex(0);
		//panel oceny
		table_oceny = new JTable();
		table_oceny.setFillsViewportHeight(true);
		this.table_oceny_model=new TableModel(dziennik,0,Przedmiot.index_przedmiotu(comboBox_przedmiot.getSelectedItem().toString()));
		table_oceny.setModel(table_oceny_model);
		table_oceny.setDefaultRenderer(Object.class, new ColorCellRenderer(0) );
		table_oceny.setAutoCreateColumnsFromModel(true);
		table_oceny.getTableHeader().setReorderingAllowed(false);
		table_oceny.getTableHeader().setResizingAllowed(false);
		table_oceny.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		panel_oceny.setViewportView(table_oceny);
		table_oceny.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
		
		table_oceny.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				int row = table_oceny.getSelectedRow();
				int col = table_oceny.getSelectedColumn();
				updatePanelOceny(row,col);
				}
				}); 

		table_oceny.getColumnModel().getColumn(0).setPreferredWidth(45);
		table_oceny.getColumnModel().getColumn(0).setMinWidth(45);
		table_oceny.getColumnModel().getColumn(0).setMaxWidth(45);
		table_oceny.getColumnModel().getColumn(1).setPreferredWidth(120);
		table_oceny.getColumnModel().getColumn(1).setMaxWidth(120);
		table_oceny.getColumnModel().getColumn(1).setMinWidth(120);
		table_oceny.getColumnModel().getColumn(2).setPreferredWidth(120);
		table_oceny.getColumnModel().getColumn(2).setMaxWidth(120);
		table_oceny.getColumnModel().getColumn(2).setMinWidth(120);
		
		if (table_oceny.getColumnCount()>3){
			for (int i=3; i<table_oceny.getColumnCount();i++){
				table_oceny.getColumnModel().getColumn(i).setPreferredWidth(20);
				table_oceny.getColumnModel().getColumn(i).setMinWidth(20);
				table_oceny.getColumnModel().getColumn(i).setMaxWidth(20);
			}
		}
		
		//panel obecnosci
		
		table_obecnosci = new JTable();
		table_obecnosci.setFillsViewportHeight(true);
		this.table_obecnosci_model=new TableModel(null,1,Przedmiot.index_przedmiotu(comboBox_przedmiot.getSelectedItem().toString()));	//nie przesylamy dziennika - przeslano go wczesniej
		table_obecnosci.setModel(table_obecnosci_model);
		table_obecnosci.setDefaultRenderer(Object.class, new ColorCellRenderer(1) );
		table_obecnosci.setAutoCreateColumnsFromModel(true);
		table_obecnosci.getTableHeader().setReorderingAllowed(false);
		table_obecnosci.getTableHeader().setResizingAllowed(false);
		table_obecnosci.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		panel_obecnosci.setViewportView(table_obecnosci);
		panel_glowny.setLayout(new BorderLayout());
		table_obecnosci.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
		
		table_obecnosci.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				int row = table_obecnosci.getSelectedRow();
				int col = table_obecnosci.getSelectedColumn();
				updatePanelObecnosci(row,col);
				}
				}); 

		table_obecnosci.getColumnModel().getColumn(0).setPreferredWidth(45);
		table_obecnosci.getColumnModel().getColumn(0).setMinWidth(45);
		table_obecnosci.getColumnModel().getColumn(0).setMaxWidth(45);
		table_obecnosci.getColumnModel().getColumn(1).setPreferredWidth(120);
		table_obecnosci.getColumnModel().getColumn(1).setMaxWidth(120);
		table_obecnosci.getColumnModel().getColumn(1).setMinWidth(120);
		table_obecnosci.getColumnModel().getColumn(2).setPreferredWidth(120);
		table_obecnosci.getColumnModel().getColumn(2).setMaxWidth(120);
		table_obecnosci.getColumnModel().getColumn(2).setMinWidth(120);
		
		if (table_obecnosci.getColumnCount()>3){
			for (int i=3; i<table_obecnosci.getColumnCount();i++){
				table_obecnosci.getColumnModel().getColumn(i).setPreferredWidth(20);
				table_obecnosci.getColumnModel().getColumn(i).setMinWidth(20);
				table_obecnosci.getColumnModel().getColumn(i).setMaxWidth(20);
			}
		}
		
		//panel uwagi
		
		table_uwagi = new JTable();
		table_uwagi.setFillsViewportHeight(true);
		this.table_uwagi_model=new TableModel(null,2,Przedmiot.index_przedmiotu(comboBox_przedmiot.getSelectedItem().toString()));	//nie przesylamy dziennika - przeslano go wczesniej
		table_uwagi.setModel(table_uwagi_model);
		table_uwagi.setDefaultRenderer(Object.class, new ColorCellRenderer(2) );
		table_uwagi.setAutoCreateColumnsFromModel(true);
		table_uwagi.getTableHeader().setReorderingAllowed(false);
		table_uwagi.getTableHeader().setResizingAllowed(false);
		table_uwagi.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		panel_uwagi.setViewportView(table_uwagi);
		panel_glowny.setLayout(new BorderLayout());
		table_uwagi.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
		
		table_uwagi.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				int row = table_uwagi.getSelectedRow();
				int col = table_uwagi.getSelectedColumn();
				updatePanelUwagi(row,col);
				}
				}); 

		table_uwagi.getColumnModel().getColumn(0).setPreferredWidth(45);
		table_uwagi.getColumnModel().getColumn(0).setMinWidth(45);
		table_uwagi.getColumnModel().getColumn(0).setMaxWidth(45);
		table_uwagi.getColumnModel().getColumn(1).setPreferredWidth(120);
		table_uwagi.getColumnModel().getColumn(1).setMaxWidth(120);
		table_uwagi.getColumnModel().getColumn(1).setMinWidth(120);
		table_uwagi.getColumnModel().getColumn(2).setPreferredWidth(120);
		table_uwagi.getColumnModel().getColumn(2).setMaxWidth(120);
		table_uwagi.getColumnModel().getColumn(2).setMinWidth(120);
		
		if (table_uwagi.getColumnCount()>3){
			for (int i=3; i<table_uwagi.getColumnCount();i++){
				table_uwagi.getColumnModel().getColumn(i).setPreferredWidth(70);
				table_uwagi.getColumnModel().getColumn(i).setMinWidth(70);
				table_uwagi.getColumnModel().getColumn(i).setMaxWidth(70);
			}
		}

		uwagi_comboBox_rok.removeAllItems();
		uwagi_comboBox_rok.addItem(dziennik.getNazwa_dziennika().substring(12,16));
		uwagi_comboBox_rok.addItem(dziennik.getNazwa_dziennika().substring(16,20));
		uwagi_textField_wystawiajacy.setText(""+nauczyciel_id);
		uwagi_textField_przedmiot.setText(comboBox_przedmiot.getSelectedItem().toString());
		
		//--------------------------------------------------------------------------
		
		initializing=false;
		panel_glowny.setVisible(true);
		this.zmien_panel_boczny();
		comboBox_przedmiot.setVisible(true);
		
	}
	
	/**
	 * <p>
	 * Metoda aktualizuje panel glowny
	 * </p>
	 */
	void updatePanelGlowny(){
		if (initializing==false){
			init();
		}
	}
	
	/**
	 * <p>
	 * Metoda aktualizuje dane w panelu bocznym wyswietlajac
	 * w nim pola obiektu przechowywanego w komorce tablicy ocen
	 * </p>
	 */
	void updatePanelOceny(int row, int col){
		if (col<3){
			
		}
		else{
			Ocena ocena = (Ocena)this.table_oceny_model.getValueAt(row, col);
			double wartosc = ocena.getWartosc();
			if (wartosc==0 || wartosc>6 || wartosc%0.5!=0) this.oceny_comboBox_ocena.setSelectedIndex(0);
			else this.oceny_comboBox_ocena.setSelectedIndex((int)(2*(wartosc-0.5)));
			this.oceny_textField_waga.setText(""+ocena.getWaga());
			this.oceny_textField_komentarz.setText(ocena.getNazwa());
		}
	}
	
	/**
	 * <p>
	 * Metoda aktualizuje dane w panelu bocznym wyswietlajac
	 * w nim pola obiektu przechowywanego w komorce tablicy obecnosci
	 * </p>
	 */
	void updatePanelObecnosci(int row, int col){
		if (col<3){
			
		}
		else{
			Obecnosc obecnosc = (Obecnosc)this.table_obecnosci_model.getValueAt(row, col);
			int dzien=0,miesiac=0,rok=0;
			Boolean error=false;
			String data=obecnosc.getData();
			char c=obecnosc.getRodzaj();
			if (data.length()==10 && data.charAt(2)=='-' && data.charAt(5)=='-'){//sprawdzaj format daty DD-MM-YYYY			
				try{
					dzien=Integer.parseInt(data.substring(0,2));
					miesiac=Integer.parseInt(data.substring(3,5));
					rok=Integer.parseInt(data.substring(6,10));
					if (dzien<1 || dzien>31) error=true;//jesli zle podano dzien - blad
					if (miesiac<1 || miesiac>12) error=true;//jesli zle podano miesiac - blad
					if (rok<calendar.get(Calendar.YEAR)-9 || rok>calendar.get(Calendar.YEAR)) error=true;//jesli zle podano rok - blad
				}
				catch(NumberFormatException ex){
					error=true;
				}
			}
			else error=true;
			
			if (error){	//w przypadku bledu wyswietl dzisiejsza date
				dzien=calendar.get(Calendar.DAY_OF_MONTH);
				miesiac=calendar.get(Calendar.MONTH);
				rok=calendar.get(Calendar.YEAR);
			}
			
			if (c==' ' || c=='-' || c=='+' || c=='s' || c=='u' || c=='o'){//sprawdzanie prawidlowosci obecnosci
			}
			else c=' ';//wpisanie pustej wartosci w razie bledu
			
			
			this.obecnosci_comboBox_dzien.setSelectedIndex(dzien-1);
			this.obecnosci_comboBox_miesiac.setSelectedIndex(miesiac-1);
			this.obecnosci_comboBox_rok.setSelectedItem(rok);
			switch(c){
			case 'o':	this.obecnosci_comboBox_obecnosc.setSelectedIndex(1);break;
			case '-':	this.obecnosci_comboBox_obecnosc.setSelectedIndex(2);break;
			case '+':	this.obecnosci_comboBox_obecnosc.setSelectedIndex(3);break;
			case 's':	this.obecnosci_comboBox_obecnosc.setSelectedIndex(4);break;
			case 'u':	this.obecnosci_comboBox_obecnosc.setSelectedIndex(5);break;
			default: 	this.obecnosci_comboBox_obecnosc.setSelectedIndex(0);break;
			}			
		}
	}
	
	/**
	 * <p>
	 * Metoda aktualizuje dane w panelu bocznym wyswietlajac
	 * w nim pola obiektu przechowywanego w komorce tablicy uwag
	 * </p>
	 */
	void updatePanelUwagi(int row, int col){
		if (col<3){
			
		}
		else{
			Uwaga uwaga = (Uwaga)this.table_uwagi_model.getValueAt(row, col);
			int dzien=0,miesiac=0,rok=0;
			Boolean error=false;
			String data=uwaga.getData();
			if (data.length()==10 && data.charAt(2)=='-' && data.charAt(5)=='-'){//sprawdzaj format daty DD-MM-YYYY			
				try{
					dzien=Integer.parseInt(data.substring(0,2));
					miesiac=Integer.parseInt(data.substring(3,5));
					rok=Integer.parseInt(data.substring(6,10));
					if (dzien<1 || dzien>31) error=true;//jesli zle podano dzien - blad
					if (miesiac<1 || miesiac>12) error=true;//jesli zle podano miesiac - blad
					if (rok<calendar.get(Calendar.YEAR)-9 || rok>calendar.get(Calendar.YEAR)) error=true;//jesli zle podano rok - blad
				}
				catch(NumberFormatException ex){
					error=true;
				}
			}
			else error=true;
			
			if (error){	//w przypadku bledu wyswietl dzisiejsza date
				dzien=calendar.get(Calendar.DAY_OF_MONTH);
				miesiac=calendar.get(Calendar.MONTH);
				rok=calendar.get(Calendar.YEAR);
			}
			
			this.uwagi_comboBox_dzien.setSelectedIndex(dzien-1);
			this.uwagi_comboBox_miesiac.setSelectedIndex(miesiac-1);
			this.uwagi_comboBox_rok.setSelectedItem(rok);
			
			uwagi_textArea_tresc.setText(uwaga.getTresc());
			uwagi_textField_wystawiajacy.setText(""+uwaga.getWystawiajacy());
			uwagi_textField_przedmiot.setText(Przedmiot.nazwa_przedmiotu(uwaga.getPrzedmiot()));
			uwagi_boolean_przeczytano=uwaga.getPrzeczytano();
			if (uwagi_boolean_przeczytano==false && wychowawca==true){	//pokazanie przycisku przeczytania uwagi
				uwagi_button_edytujUwage.setVisible(false);
				uwagi_button_przeczytane.setVisible(true);
			}
			else{
				uwagi_button_edytujUwage.setVisible(true);
				uwagi_button_przeczytane.setVisible(false);
			}
		}
	}
	
	/**
	 * <p>
	 * Metoda aktualizuje panel boczny w zaleznosci od tego ktora zakladka obiektu typu JTabbedPane jest wybrana
	 * </p>
	 */
	void zmien_panel_boczny(){
		if (this.initializing==false){
			int numer=this.panel_glowny.getSelectedIndex();
			if (numer==0){
				this.panel_boczny_oceny.setVisible(true);
				this.panel_boczny_obecnosci.setVisible(false);
				this.panel_boczny_uwagi.setVisible(false);
			}
			if (numer==1){
				this.panel_boczny_oceny.setVisible(false);
				this.panel_boczny_obecnosci.setVisible(true);
				this.panel_boczny_uwagi.setVisible(false);
			}
			if (numer==2){
				this.panel_boczny_oceny.setVisible(false);
				this.panel_boczny_obecnosci.setVisible(false);
				this.panel_boczny_uwagi.setVisible(true);
			}
		}
	}
	
	/**
	 * <p>
	 * Metoda ustawiajaca obiekt typu dziennik ktory zostal wybrany przez nauczyciela.
	 * Obiekt ten bedzie edytowany celem pozniejszego zapisu do bazy danych.
	 * Metoda ustawia wyswietlana nazwe klasy w oknie oraz pobiera uprawnienia nauczyciela
	 * i wyswietla je w obiekcie klasy JComboBox. Po wykonaniu kodu nastepuje inicjalizacja trybu nauczyciela.
	 * </p> 
	 * 
	 * @param dziennik - obiekt klasy Dziennik wybrany przez nauczyciela
	 */
	void ustaw_dziennik(Dziennik dziennik){		
		this.dziennik=dziennik;
		this.dziennik_zapisany=dziennik;
		this.initializing=true;
		//ustawianie label
		this.label_klasa.setText("Klasa "+this.dziennik.getNazwa_dziennika().substring(9, 11));
		//ustawianie combobox
		ArrayList<Uprawnienia> lista_uprawnien = null;
		ArrayList<Integer> uprawnienia = null;
		try{
		ResultSet rs=Polaczenie.MySQL_zapytanie("select id, uprawnienia, wychowawca from nauczyciele where id="+nauczyciel_id);
		rs.next();
		if (rs.getString("wychowawca").equals(dziennik.getNazwa_dziennika())) this.wychowawca=true;
		lista_uprawnien = DziennikMain.polaczenie.deserializuj(rs.getBytes("uprawnienia"));
		}
		catch (SQLException e)
		{
			e.printStackTrace();
		}
		comboBox_przedmiot.removeAllItems();	
		if (lista_uprawnien!=null && !lista_uprawnien.isEmpty()){

			for (int i=0;i<lista_uprawnien.size();i++){
				if (lista_uprawnien.get(i).getDziennik().equals(this.dziennik.getNazwa_dziennika())){
					uprawnienia = lista_uprawnien.get(i).getUprawnienia_przedmioty();
				}
			}					
			for (int i=0;i<uprawnienia.size();i++){
				this.comboBox_przedmiot.addItem(Przedmiot.nazwa_przedmiotu(uprawnienia.get(i)));
			}
		}
		this.init();
	}
	
	/**
	 * <p>
	 * Metoda zwraca Obiekt dziennika przechowywany w obiekcie Panelu
	 * </p> 
	 * @return Metoda zwraca Obiekt dziennika przechowywany w obiekcie Panelu
	 */
	public Dziennik getDziennik(){
		return dziennik_zapisany;
	}
	
	/**
	 * <p>
	 * Metoda pozwalajaca na pobranie zmodyfikowanych danych z tabel
	 * oraz zapis zmodyfikowanego dziennika
	 * </p> 
	 */
	private void zapiszDziennik(){
		int n = JOptionPane.showConfirmDialog(this,"Zapisać dziennik?","Zapisywanie",JOptionPane.YES_NO_OPTION);
		if (n==0){
			dziennik=table_oceny_model.zapiszZmianyDziennika();
			dziennik=table_obecnosci_model.zapiszZmianyDziennika();
			dziennik=table_uwagi_model.zapiszZmianyDziennika();
			dziennik_zapisany=dziennik;
			Nauczyciel.edytuj_dziennik(dziennik_zapisany);
		}
	}
}
